package com.lds.offer.demo;

import java.util.HashMap;

/**
 * @description: Offer 50. 第一个只出现一次的字符
 * @author: lds
 * @create: 2022-10-08 09:53
 **/
public class Offer_50_第一个只出现一次的字符 {

    //https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/

    /**
     * 利用HashMap键不可重复特性
     * 1. 将字符串转换成字符数组
     * 2. 将字符作为键，是否已存在该键为值，生成键值对
     * 3. 当该键已存在时，会将对应的值修改为true
     * 4. 遍历该字符数组，用字符作为key，去获取map中的value
     * 5. 当获取到第一个值为false时，改字符即为第一个无重复字符
     */

    public static void main(String[] args) {
        char abaccdeff = find("anbaccdeff");
        System.out.println(abaccdeff);
    }


    public static char find(String s) {
        char[] arr = s.toCharArray();
        HashMap<Character,Boolean> map = new HashMap();
        for (int i = 0; i < arr.length; i++) {
            map.put(arr[i],map.containsKey(arr[i]));
        }
        for (int i = 0; i < arr.length; i++) {
            if (!map.get(arr[i])) {
                return arr[i];
            }
        }
        return ' ';
    }
}
